Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! このプルリクエストは、Modのコードベース全体にわたるコメントの明瞭さと正確性を向上させることを目的としています。特に、NeoForgeの新しい概念とMinecraft 1.7.10時代の開発との違いを強調することで、RTM関連のMod開発者がプロジェクトの構造と動作をより迅速に理解できるようになります。これにより、コードの可読性が向上し、将来のメンテナンスとコラボレーションが容易になります。 Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
このプルリクエストは、コード内のコメントをより分かりやすく、特に古いバージョンのMinecraft Mod開発経験者にとって有益な情報を含むように改善するものです。全体として、コメントの質が大幅に向上しており、素晴らしい変更だと思います。
いくつか軽微な修正点を提案します。
- コメント内で
〜らしい、〜と思う、?のような不確かな表現がいくつか見られます。コメントはコードの挙動を正確に記述するべきなので、断定的な表現に修正することを推奨します。 - いくつかのコメントにタイポが見つかりました。
これらの点を修正することで、コードの可読性とメンテナンス性がさらに向上するでしょう。詳細は各ファイルへのコメントをご確認ください。
| import net.neoforged.neoforge.registries.DeferredRegister; | ||
|
|
||
| // この値はMETA-INF/neoforge.mods.tomlファイルの入力と一致する必要があります。 | ||
| // Modアノテーション、1.21.1になっても1.7.10と機能は同じ? |
| // DeferredRegisterは、MinecraftのRegistriesに登録されているタイプの要素の新しいバリエーションを実装する場合に必要になる | ||
| // 対象となるのは、BlockやItem、Entityなど、`minecraft:object_id`の形式で表すタイプのオブジェクト? | ||
| // GameRegistryを自由に呼びつけるのは危険なため、代わりにこれが使用されるようになったらしい |
There was a problem hiding this comment.
コメントに疑問符 ? が含まれており、内容が推測になっています。コメントはコードの挙動を明確に説明するべきです。DeferredRegister の役割について、より断定的な説明に修正することを提案します。
| // DeferredRegisterは、MinecraftのRegistriesに登録されているタイプの要素の新しいバリエーションを実装する場合に必要になる | |
| // 対象となるのは、BlockやItem、Entityなど、`minecraft:object_id`の形式で表すタイプのオブジェクト? | |
| // GameRegistryを自由に呼びつけるのは危険なため、代わりにこれが使用されるようになったらしい | |
| // DeferredRegisterは、MinecraftのRegistriesに登録されているタイプの要素の新しいバリエーションを実装する場合に必要になります。 | |
| // 対象となるのは、BlockやItem、Entityなど、`minecraft:object_id`の形式で識別される登録可能なオブジェクトです。 | |
| // GameRegistryを自由に呼びつけるのは危険なため、代わりにこれが使用されるようになりました。 |
| // 作ったDeferredRegisterに登録されるそれぞれの要素を表すのが、DeferredHolder | ||
| // FMLPreInitializationEventでGameRegistryに登録していた時代は、BlockやItemをコード内で使用する際に、そのオブジェクトのインスタンスが必ず生成されていることが明らかだったが | ||
| // Modローダーの判断で生成されるシステムのDeferredRegisterではそれがない | ||
| // そのため、実際のオブジェクトの代わりにコードで使用されるためにつくられたのが、DeferredHolderだと思う |
There was a problem hiding this comment.
コメントの末尾が 〜だと思う と推測の形になっています。DeferredHolder の役割をより明確に説明することで、コードの可読性が向上します。
| // 作ったDeferredRegisterに登録されるそれぞれの要素を表すのが、DeferredHolder | |
| // FMLPreInitializationEventでGameRegistryに登録していた時代は、BlockやItemをコード内で使用する際に、そのオブジェクトのインスタンスが必ず生成されていることが明らかだったが | |
| // Modローダーの判断で生成されるシステムのDeferredRegisterではそれがない | |
| // そのため、実際のオブジェクトの代わりにコードで使用されるためにつくられたのが、DeferredHolderだと思う | |
| // 作ったDeferredRegisterに登録されるそれぞれの要素を表すのが、DeferredHolderです。 | |
| // FMLPreInitializationEventでGameRegistryに登録していた時代と異なり、DeferredRegisterではModローダーの判断でオブジェクトが生成されます。 | |
| // そのため、DeferredHolderは、登録処理が完了するまでオブジェクトのプレースホルダーとして機能し、安全に参照するために使用されます。 |
| output.accept(PolygonTrainModItems.EXAMPLE_ITEM.get()); // サンプルアイテムをタブに追加します。独自のタブの場合は、イベントよりもこの方法が推奨されます。 | ||
|
|
||
| // EXAMPLE_ITEMをこのタブに追加 | ||
| // Mod独自のタブにアイテムを追加する場合は、後述のEventよりもこの方法が推奨されるらしい |
| output.accept(PolygonTrainModItems.IC_CARD_TICKET.get()); | ||
|
|
||
| // インベントリに作成したブロックアイテムを追加する、ブロックを直接登録しても自動でブロックアイテムを探索してやってくれるらしい | ||
| // 各種BlockののBlockItemをクリエイティブタブ追加する |
|
|
||
| // インベントリに作成したブロックアイテムを追加する、ブロックを直接登録しても自動でブロックアイテムを探索してやってくれるらしい | ||
| // 各種BlockののBlockItemをクリエイティブタブ追加する | ||
| // 今回はItemを指定しているが、Blockを直接登録した場合も、自動で対応するBlockItemを探索してやってくれるらしい |
| // MODクラスのコンストラクタは、MODがロードされたときに最初に実行されるらしい | ||
| // FMLはIEventBusやModContainerのようないくつかの引数の型を認識し、自動的に渡すらしい |
There was a problem hiding this comment.
| } | ||
|
|
||
| // DeferredレジスタをMODイベントバスに登録し、ブロックが登録されるようにする | ||
| // DeferredRegisterをNeoForgeのMODEventButに登録し、DeferredRegisterに登録された各ブロックがゲームに登録されるようにする |
| import net.neoforged.neoforge.client.gui.IConfigScreenFactory; | ||
|
|
||
| // このクラスは専用サーバーではロードされません。ここからクライアント側のコードにアクセスしても安全です。 | ||
| // Modアノテーションに、dist = Dist.CLIENTを指定しているため、このクラスはクライアントサイドにのみ存在するようになるらしい |
| // EventBusSubscriberを使用すると、@SubscribeEventアノテーションのあるこのクラス内のすべての静的メソッドが、 | ||
| // Modコンストラクタで登録せずとも自動的に登録されるらしい |
There was a problem hiding this comment.
コメントに 〜らしい という不確かな表現が使われています。@EventBusSubscriber の機能について、断定的な表現で説明する方が分かりやすいです。
| // EventBusSubscriberを使用すると、@SubscribeEventアノテーションのあるこのクラス内のすべての静的メソッドが、 | |
| // Modコンストラクタで登録せずとも自動的に登録されるらしい | |
| // EventBusSubscriberを使用すると、@SubscribeEventアノテーションのあるこのクラス内のすべての静的メソッドが、 | |
| // Modコンストラクタで登録せずとも自動的に登録されます。 |
NeoForgeの仕様を何もわからず最初からあるコメントをそのまま翻訳してた頃のコメントを改善
RTM関連Mod開発者にもわかりやすいように、1.7.10時代との比較の観点での説明も追加